package com.dhecp.project.hr.service;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

import com.dhecp.common.core.domain.AjaxResult;
import com.dhecp.project.common.service.BaseModuleService;
import com.dhecp.project.hr.domain.OperateCompanyApply;
import com.dhecp.project.hr.domain.OperateCompanyExit;

/**
 * 运营公司备案 服务层
 * @author DH-Xxj
 * @version 2022年3月3日
 */
public interface OperateCompanyApplyService extends BaseModuleService{

	/**
	 * 根据公司简称查找
	 * @author XDH
	 */
	OperateCompanyApply findByShortName(String shortName);

	/**
	 * 根据公司编码查找
	 * @author XDH
	 */
	OperateCompanyApply findByGsbm(String gsbm);

	/**
	 * 查询前一单NID、BID
	 * @param nid 必要参数：当前 单据编码
	 * @return AjaxResult (data.nid 前一单NID， data.bid 前一单BID)
	 * @author DH-Xxj
	 * @throws Exception  
	 */
	AjaxResult queryLastNid(Map<String, Object> params) throws Exception;

	/**
	 * 查询后一单NID、BID
	 * @param nid 必要参数：当前 单据编码
	 * @return AjaxResult (data.nid 后一单NID， data.bid 后一单BID)
	 * @author DH-Xxj
	 * @throws Exception  
	 */
	AjaxResult queryNextNid(Map<String, Object> params) throws Exception;

	/**
	 * 查询指定单nid的首记录
	 * @param nid 必要参数：当前 单据编码
	 * @return OperateCompanyApply
	 * @throws Exception
	 * @author DH-Xxj
	 */
	OperateCompanyApply queryFirstRecord(Map<String, Object> params) throws Exception;
	
	/**
	 * 查询指定单nid的整单录
	 * @param nid 必要参数：当前 单据编码
	 * @return List - OperateCompanyApply
	 * @throws Exception
	 * @author DH-Xxj
	 */
	List<OperateCompanyApply> queryListByNid(Map<String, Object> params) throws Exception;
	
	/**
	 * 查询
	 * @param params
	 * @return List - OperateCompanyApply
	 * @throws Exception
	 * @author DH-Xxj
	 */
	List<OperateCompanyApply> queryList(Map<String, Object> params) throws Exception;


	List<OperateCompanyApply> queryList2(Map<String, Object> params) throws Exception;

	/**
	 * 查询未流转完的数据
	 * @author XDH
	 */
	List<OperateCompanyApply> queryListUnEnd();
	
	/**
	 * 查询所有流转完成的
	 */
	List<OperateCompanyApply> listAllOn();
	
	/**
	 * 通过GUID查询数据
	 * @author XDH
	 */
	Map<String, Object> queryMapByGuid(String guid);

	/**
	 * 保存
	 * @param moduleTable 必要参数：功能唯一标识
	 * @param infoMap 必要参数：非网格字段（包括头部、底部所有显示和隐藏的字段）
	 * @param infoItems 必要参数：对应实体类的json格式字符串
	 * @return
	 * @author DH-Xxj
	 */
	AjaxResult saveData(Map<String, Object> params);

	/**
	 * 培训费调整
	 */
	AjaxResult editGledfJe(String guid, BigDecimal gledfJe,String depositAccount,String depositInformation);

	/**
	 * 修改税号
	 */
	AjaxResult editVGsSh(String guid, String vGsMc, String vGsSh);

	/**
	 * 删除
	 * @param params
	 * @return AjaxResult
	 * @author DH-Xxj
	 */
	AjaxResult deleteData(Map<String, Object> params);

	/**
	 * 修改删除标志（预留）
	 * @param infoItems 必要参数：对应实体类的json格式字符串（仅需 guid 和 deleted）
	 * @return AjaxResult
	 * @author DH-Xxj
	 */
	AjaxResult updateDeleted(Map<String, Object> params);

	/**
	 * 流转  —— 添加流程任务、修改流程状态及生效标志
	 * @param infoMap 必要参数：非网格字段（包括头部、底部所有显示和隐藏的字段）
	 * @param infoItems 必要参数：对应实体类的json格式字符串（仅需 guid）
	 * @return AjaxResult
	 * @author DH-Xxj
	 */
	AjaxResult updateFlowGo(Map<String, Object> params);

	/**
	 * 流转通过
	 */
	AjaxResult updateFlowGoPass(String bid);

	/**
	 * 退回  —— 添加流程任务、修改流程状态及生效标志
	 * @param infoMap 必要参数：非网格字段（包括头部、底部所有显示和隐藏的字段）
	 * @param infoItems 必要参数：对应实体类的json格式字符串（仅需 guid）
	 * @return AjaxResult
	 * @author DH-Xxj
	 */
	AjaxResult updateFlowBack(Map<String, Object> params);
	
	/**
	 * 运营公司信息查询
	 * @param otherWhere 可选参数：查询附加条件[1：普通员工只查自己绑定的，管理员查全部]
	 * @return List - OperateCompanyApply
	 * @throws Exception
	 * @author DH-Xxj
	 */
	List<OperateCompanyApply> queryOperateCompanyInfoList(Map<String, Object> params) throws Exception;

	/**
	 * 从运营公司信息调入运营公司退出
	 * @param params
	 * @return List - OperateCompanyExit
	 * @throws Exception
	 * @author DH-Xxj
	 */
	List<OperateCompanyExit> callOperateCompanyExitList(Map<String, Object> params) throws Exception;
	
}
